1. Field of the Invention
This invention relates to sorting systems and methods, and more particularly to multiple data type sorting systems.
2. Description of Related Art
To enable a user to efficiently view of a group of records, the user may request that the records be ordered or sorted based on one or more fields in each record. In a record the fields to be sorted may be different data types. For example, an employee database is shown in FIG. 1. The database includes a plurality of records where each record has six fields: name, date of birth, department number, annual salary, and sex (male/female). In this database each field is stored as a different data type. In particular, the name field is stored as a string data type, the date-of-birth field is a stored as a date data type, the department-number field is stored as an integer data type, the annual-salary field is stored as a double integer, and the sex field is stored as a Boolean data type.
In an object-oriented language, the data would be represented as instances of different classes; for example, in Java, the classes would be respectively, String, Date, Integer, BigDecimal, and Boolean. Even though all the data may be displayed as strings with readable characters, the data cannot be correctly ordered according to the numeric values of these characters. Otherwise, January would appear after February, and 2 would appear after 11. Therefore, data in a database or user-interface table is typically stored and sorted in appropriate data types instead of exclusively in the strings that represent their values to the user.
When a user requests the records of the employee database to be sorted, a sorting system invokes an algorithm to sort the records based on the selected fields . The sorting systems commonly invoke a different algorithm for each field data type to be sorted due to their different storage representations and sorting characteristics. Accordingly, when a user requests a group of records to be sorted based on fields of different data types, the sorting system may invoke different sorting algorithms to complete the ordering or sorting of the records. Depending on the number of records or fields, this technique can be processor intensive.
The present invention provides an efficient sorting system and method for sorting a plurality of records containing multiple-typed fields arranged in a plurality of columns. The records can be sorted based on the values in a selected subset of columns. The system generates a collation key for each field of the columns to be considered for sorting the records. Then the system sorts or orders the records based on the collation keys. The multiple columns may include at least two different data types. Further the collation keys generated by the system for the columns ideally have the same data type, such as an array of bytes. Then the system may use a common sorting algorithm to sort the records because the collation keys have the same data type.
The present invention may also sort records based on multiple fields by converting each of the multiple fields of the records to common data type fields. Then the invention orders the records based on the common data type fields. The multiple fields may include at least two different data types. Then the system may use a common sorting algorithm to sort the records because the common data type fields have the same data type. Further, the common data type fields are ideally arrays of bytes.